package com.jwsoft.manager.core.integration;

import com.bifang.assistant.common.vo.BaseVO;
import com.github.pagehelper.PageInfo;
import com.jwsoft.manager.common.vo.YwApply.EnrollCheckShLqVO;
import com.jwsoft.manager.common.vo.eduSchoolConfig.SchoolConfigQueryVO;
import com.jwsoft.manager.common.vo.eduSchoolConfig.SchoolConfigVO;
import com.jwsoft.manager.common.vo.eduStudentEnroll.*;
import com.jwsoft.manager.common.vo.eduStudentEnrollPre.EduStudentEnrollPreKeyVO;
import com.jwsoft.manager.common.vo.eduStudentEnrollPre.EduStudentEnrollPreVO;
import com.jwsoft.manager.core.dao.model.EduStudentEnrollPre;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 学生报名业务本地接口
 *
 * @author wangtao
 * @since 2022-12-05
 */
public interface EduStudentEnrollIntegration {
    /** 分页查询 民办公办一起报名，同时报名，民办等先录取，东阳模式*/
    PageInfo<EduStudentEnrollVO> getList(EduStudentEnrollQueryVO vo);

    //学生报名撤销查询
    PageInfo<EduStudentEnrollVO> getQuashList(EduStudentEnrollQueryVO vo);
    /** 根据主键查询详情 */
    EduStudentEnrollVO getById(EduStudentEnrollKeyVO vo);
    //根据学段和登录人信息 获取预采集人员
    List<BmStudentVO> getPreListByToken(BmQueryVO vo);
    /** 根据预报名id 查询可报名信息 */
    EduStudentEnrollPreVO getBeforeByPreId(EduStudentEnrollPreKeyVO vo);

    /**
     * 根据家长身份证查询可报名信息
     */
    List<EduStudentEnrollPreVO> getBeforeBatch(BmQueryVO vo);
    /** 保存前统一校验*/
    void checkSave(SaveStudentEnrollVO vo);
    /** 新增 */
    SaveStudentEnrollVO add(SaveStudentEnrollVO vo);
    /** 家长端报名 */
    SaveStudentEnrollVO saveEnrollApp(SaveStudentEnrollVO vo);
    /** 修改 */
    EduStudentEnrollVO edit(EduStudentEnrollVO vo);
    /** 根据主键删除 */
    void del(EduStudentEnrollKeyVO vo);
    /**
     * 判断登录账号是否学生
     * */
    Boolean UserIsStudent(BaseVO vo);
    /**
     * 判断是否可以摇号绑定
     * */
    List<BindEnrollVO> checkBind(BindEnrollQueryVO vo);
    /***
     * 我的报名查询
     * */
    List<MyYearEnrollVO> getMyEnrollInfo(MyEnrollQueryVO vo);
    //校验报名情况
    Boolean checkEnroll(YjbmQueryVO vo);

    Boolean checkEnroll(EduStudentEnrollPre eduStudentEnrollPre);

    Boolean checkEnroll(String idcard, Integer year);

    //查询是否报过名
    Boolean hasEnroll(String idcard, Integer year);
    void checkYhExp(EduStudentEnrollQueryVO vo);

    EduStudentEnrollPre getPre(String studentEnrollPreId,String idcard);

    /**
     * excel数据导出
     * */
    void exportYwMzgApplyInfo(EduStudentEnrollQueryVO vo, HttpServletResponse response);

    YwMbApplyFileVO inputYwMzgApplyInfo(YwMbApplyFileVO vo, MultipartFile file);


    //获取查询是否在审核录取操作期内 东阳模式
    Boolean checkShLq(EnrollCheckShLqVO vo);
    EduStudentEnrollVO getYwApplyDetail(EduStudentEnrollKeyVO vo);

    EduStudentEnrollVO getYwApplyById(EduStudentEnrollKeyVO vo);

    //回退到待审核
    void backAuth(EduStudentEnrollKeyVO vo);

    //报名退回 删除 民办依托于公办
    void ywApplyBack(EduStudentEnrollKeyVO vo);
    //报名退回 删除 民办和公办单独
    void ywApplyBackDg(EduStudentEnrollKeyVO vo);
    //家长端报名退回 删除
    void ywApplyBackApp(EduStudentEnrollKeyVO vo);
    void updateEnrollStatus(UpdateEnrollStatusVO vo);

    //根据身份证查询报名数据
    List<EduStudentEnrollVO> getYwApplyInfoByIdcard(EduStudentEnrollQueryVO vo);

    void exportYwApplyInfo(EduStudentEnrollQueryVO vo, HttpServletResponse response);

    PageInfo<EduStudentEnrollVO> getYwApplyList(EduStudentEnrollQueryVO vo);

    //报名人数情况查询
    StudentEnrollCntVO queryBmCnt(EduStudentEnrollQueryVO vo);

    void batchMzgAdmit(StudentEnrollBatchVO vo);

    void batchAdmit(StudentEnrollBatchVO vo);

    void ywMzgStop(StudentEnrollStopVO vo);

    //获取义务教育民转公报名列表信息
    PageInfo<EduStudentEnrollVO> getYwMzgApplyInfo(EduStudentEnrollQueryVO vo);

    void ywMzgAudit(StudentEnrollSaveVO vo);

    void checkSh(EnrollCheckShLqVO vo);

    void checklq(EnrollCheckShLqVO vo);

    StudentEnrollLqVO ywMzgApply(StudentEnrollSaveVO vo);

    void exportYwMbApplyInfo(EduStudentEnrollQueryVO vo, HttpServletResponse response);

    YwMbApplyFileVO inputYwMbApplyInfo(YwMbApplyFileVO vo, MultipartFile file);

    void ywMbStop(StudentEnrollStopVO vo);

    void ywMbAudit(StudentEnrollSaveVO vo);

    StudentEnrollLqVO ywMbApply(StudentEnrollSaveVO vo);

    PageInfo<EduStudentEnrollVO> getYwMbApplyInfo(EduStudentEnrollQueryVO vo);

    void exportYwMbApplyInfo2(EduStudentEnrollQueryVO vo, HttpServletResponse response);

    YwMbApplyFileVO inputYwMbApplyInfo2(YwMbApplyFileVO vo, MultipartFile file);

    void ywMbStop2(StudentEnrollStopVO vo);

    void ywMbAudit2(StudentEnrollSaveVO vo);

    StudentEnrollLqVO ywMbApply2(StudentEnrollSaveVO vo);

    PageInfo<EduStudentEnrollVO> getYwMbApplyInfo2(EduStudentEnrollQueryVO vo);

    void batchAdmit2(StudentEnrollBatchVO vo);


    PageInfo<EduStudentEnrollVO> getYwGbApplyInfo(EduStudentEnrollQueryVO vo);

    void ywGbAudit(StudentEnrollSaveVO vo);

    StudentEnrollLqVO ywGbApply(StudentEnrollSaveVO vo);

    void exportYwGbApplyInfo(EduStudentEnrollQueryVO vo, HttpServletResponse response);

    void ywGbStop(StudentEnrollStopVO vo);

    //根据学校id获取配置信息
    List<SchoolConfigVO> querySchoolConfigBySchoolId(SchoolConfigQueryVO vo);

    //学校录取报名人员
    void schoolAddEnroll(SaveStudentEnrollVO vo);

    PageInfo<EduStudentEnrollVO> getEnrollLottery(EduStudentEnrollQueryVO vo);

    void exportEnrollLottery(EduStudentEnrollQueryVO vo,HttpServletResponse response);
    /**义务教育民办第三志愿单个录取*/
    StudentEnrollLqVO ywMbApply3(StudentEnrollSaveVO vo);
    /**义务教育民办第三志愿停止招生*/
    void ywMbStop3(StudentEnrollStopVO vo);
    /**义务教育民办第三志愿审核*/
    void ywMbAudit3(StudentEnrollSaveVO vo);
    /**义务教育民办第三志愿批量录取*/
    void batchAdmit3(StudentEnrollBatchVO vo);
    /**义务教育民办第三志愿报名摇号信息导出*/
    void exportYwMbApplyInfo3(EduStudentEnrollQueryVO vo, HttpServletResponse response);
    /**义务教育民办第三志愿报名摇号信息导入*/
    YwMbApplyFileVO inputYwMbApplyInfo3(YwMbApplyFileVO vo, MultipartFile file);
    /**获取义务教育民办第三志愿报名列表信息*/
    PageInfo<EduStudentEnrollVO> getYwMbApplyInfo3(EduStudentEnrollQueryVO vo);
    /**摇号导出人员缓存清除*/
    void clearEnrollLotteryCache(EduStudentEnrollQueryVO vo);

    void clearYwEnrollCache(EduStudentEnrollQueryVO vo);

    /**
     * 学生线下录入学生修改
     * @param vo
     * @return
     */
    EduStudentEnrollVO editStudentEnrollBySchool(SaveStudentEnrollVO vo);
}
